﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//Thu Vien Them Vao
using QuanLyQuanCafe.DataAccess;
using QuanLyQuanCafe.BusinessObject;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;

namespace QuanLyQuanCafe.BusinessLogic
{
    class NhanVienBL
    {
        KetNoiDuLieu connect = new KetNoiDuLieu();

        public DataTable LayDanhSachNhanVien()
        {
            string sql = "SELECT CMND_NV, HoTenNV, NgaySinh, DiaChi, GioiTinh, CongViec, NgayVaoLam, LuongCanBan, SoDT FROM NHANVIEN";
            return connect.LayDanhSachDuLieu(sql);
        }

        public DataTable LayDanhSachTraCuuNhanVien()
        {
            string sql = "SELECT CMND_NV, HoTenNV, Right(Left(NgaySinh,11),4), DiaChi, GioiTinh, CongViec, NgayVaoLam, SoDT FROM NHANVIEN";
            return connect.LayDanhSachDuLieu(sql);
        }

        public DataTable LayKetQuaDanhSachTraCuuNhanVien(NhanVienBO nhanvienBO, string namsinhNV)
        {
            string sql = string.Format("SELECT CMND_NV, HoTenNV, Right(Left(NgaySinh,11),4), DiaChi, GioiTinh, CongViec, NgayVaoLam, SoDT FROM NHANVIEN"
                + " WHERE CMND_NV LIKE '%{0}%' AND HoTenNV LIKE N'%{1}%' AND Right(Left(NgaySinh,11),4) LIKE '%{2}%' AND DiaChi LIKE N'%{3}%' AND GioiTinh LIKE N'%{4}%' AND CongViec LIKE N'%{5}%'",nhanvienBO.CMND_NV, nhanvienBO.HoTenNV, namsinhNV, nhanvienBO.DiaChi, nhanvienBO.GioiTinh, nhanvienBO.CongViec);
            return connect.LayDanhSachDuLieu(sql);
        }

        public bool KiemTraCMNDTonTai(string value)
        {
            if(connect.KiemTraGiaTriTonTai("NHANVIEN", "CMND_NV", value))
                return true;
            return false;
        }
        public bool ThemNhanVien(NhanVienBO nhanvienBO)
        {
            if (KiemTraTruocKhiLuu(nhanvienBO))
            {
                string sql = string.Format("INSERT INTO NHANVIEN (CMND_NV, HoTenNV, NgaySinh, DiaChi, GioiTinh, CongViec, NgayVaoLam, LuongCanBan, SoDT)"
                                    + "VALUES ('{0}',N'{1}','{2}',N'{3}',N'{4}',N'{5}','{6}','{7}','{8}')", nhanvienBO.CMND_NV, nhanvienBO.HoTenNV, nhanvienBO.NgaySinh, nhanvienBO.DiaChi, nhanvienBO.GioiTinh, nhanvienBO.CongViec, nhanvienBO.NgayVaoLam, nhanvienBO.LuongCanBan, nhanvienBO.SoDT);
                if (connect.ExecuteQuery(sql))
                {
                    MessageBox.Show("Thêm Nhân Viên Thành Công", "Quản Lý Quán Cafe", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return true;
                } 
            }
            return false;
        }

        public bool SuaNhanVien(NhanVienBO nhanvienBO)
        {
            if (KiemTraTruocKhiLuu(nhanvienBO))
            {
                string sql = string.Format("UPDATE NHANVIEN SET HoTenNV = N'{0}', NgaySinh = '{1}', DiaChi = N'{2}', GioiTinh = N'{3}', CongViec = N'{4}', NgayVaoLam = '{5}', LuongCanBan = '{6}', SoDT = '{7}'"
                                    + "WHERE CMND_NV = '{8}'", nhanvienBO.HoTenNV, nhanvienBO.NgaySinh, nhanvienBO.DiaChi, nhanvienBO.GioiTinh, nhanvienBO.CongViec, nhanvienBO.NgayVaoLam, nhanvienBO.LuongCanBan, nhanvienBO.SoDT, nhanvienBO.CMND_NV);
                if (connect.ExecuteQuery(sql))
                {
                    MessageBox.Show("Sửa Nhân Viên Thành Công", "Quản Lý Quán Cafe", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return true;
                }
            }
            return false;
        }

        public bool XoaNhanVien(string value)
        {
            string sql = string.Format("DELETE FROM NHANVIEN WHERE CMND_NV = '" + value + "'");
            if(connect.ExecuteQuery(sql))
            {
                MessageBox.Show("Xóa Nhân Viên Thành Công", "Quản Lý Quán Cafe", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return true;
            }
            return false;
        }
        
        public bool KiemTraTruocKhiLuu(NhanVienBO nhanvienBO)
        {
            if ((nhanvienBO.CMND_NV.Equals("") || int.Parse(nhanvienBO.CMND_NV) < 100000000) || (int.Parse(nhanvienBO.CMND_NV) > 999999999))
            {
                MessageBox.Show("Chứng Minh Nhân Dân Phải Gồm Chín Số .", "Quản Lý Quán Cafe", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }
            if (nhanvienBO.HoTenNV.Equals(""))
            {
                MessageBox.Show("Họ Tên Không Hợp Lệ.", "Quản Lý Quán Cafe", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }
            if (nhanvienBO.NgaySinh.Equals("") || nhanvienBO.NgaySinh > DateTime.Now || (DateTime.Now.Year - nhanvienBO.NgaySinh.Year) > 55 || (DateTime.Now.Year - nhanvienBO.NgaySinh.Year) < 18)
            {
                MessageBox.Show("Ngày Sinh Không Hợp Lệ.", "Quản Lý Quán Cafe", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }
            if (nhanvienBO.DiaChi.Equals(""))
            {
                MessageBox.Show("Địa Chỉ Không Hợp Lệ.", "Quản Lý Quán Cafe", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }
            if (nhanvienBO.GioiTinh.Equals(""))
            {
                MessageBox.Show("Giới Tính Không Hợp Lệ.", "Quản Lý Quán Cafe", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }
            if (nhanvienBO.CongViec.Equals(""))
            {
                MessageBox.Show("Công Việc Không Hợp Lệ.", "Quản Lý Quán Cafe", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }
            if (nhanvienBO.NgayVaoLam.Equals("") || nhanvienBO.NgayVaoLam > DateTime.Now || nhanvienBO.NgayVaoLam <= nhanvienBO.NgaySinh)
            {
                MessageBox.Show("Ngày Vào Làm Không Hợp Lệ.", "Quản Lý Quán Cafe", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }
            if (nhanvienBO.LuongCanBan.Equals("") || nhanvienBO.LuongCanBan < 1500000)
            {
                MessageBox.Show("Lương Căn Bản Không Hợp Lệ.", "Quản Lý Quán Cafe", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }
            if (!nhanvienBO.SoDT.Equals("") && (float.Parse(nhanvienBO.SoDT) < 100000000))
            {
                MessageBox.Show("Số Điện Thoại Không Hợp Lệ.", "Quản Lý Quán Cafe", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }   
            return true;
        }

    }
}
